package open3366pvp.as3
{
	import flash.utils.Dictionary;
	
	import open3366pvp.as3.dataStruct.*;

	public class Open3366PvpConfig
	{
		private static var _dic:Dictionary;
		private static var _errorDic:Dictionary;
		
		private static function setup():void
		{
			_dic = new Dictionary();
			_dic[3] = new AstZoneInfo();
			_dic[202] = new ReConnectProp();
			_dic[300] = new ZoneProp(300);
			_dic[301] = new RoomProp(301);
			_dic[302] = new TableProp(302);
			_dic[303] = new TableProp(303);
			_dic[304] = new ZoneProp(304);
			_dic[305] = new RoomProp(305);
			_dic[306] = new TableProp(306);
			_dic[307] = new ZoneProp(307);
			_dic[308] = new OneZoneProp();
			_dic[309] = new AstRoomProp();
			_dic[310] = new OneRoomProp();
			_dic[311] = new MassRoomProp();
			_dic[312] = new AstTableProp();
			_dic[313] = new OneTableProp();
			_dic[314] = new MassTableProp();
			_dic[315] = new AstUserProp();
			_dic[316] = new OneUserProp();
			_dic[317] = new MassUserProp();
			_dic[322] = new ServerMsg();
			_dic[323] = new RoomProp(323);
			_dic[324] = new ZoneProp(324);
			_dic[325] = new ZoneProp(325);
		}
		setup();
		
		private static function setupErrorCode():void
		{
			_errorDic = new Dictionary();
			_errorDic[-1] = "获取游戏区的时候，设置了不存在创建游戏区，仍旧返回NULL";
			_errorDic[-2] = "获取房间列表内部错误";
			_errorDic[-3] = "获取房间的时候，设置了不存在创建房间，仍旧返回NULL";
			_errorDic[-4] = "获取用户的时候，设置了不存在创建用户，仍旧返回NULL";
			_errorDic[-5] = "管理链表的内部错误<严重>";
			_errorDic[-6] = "获取桌子的时候，设置了不存在创建桌子，仍旧返回NULL";
			_errorDic[-7] = "获取桌子列表内部错误";
			_errorDic[-8] = "获取用户列表内部错误";
			_errorDic[-9] = "创建游戏区失败";
			_errorDic[-10] = "创建用户节点";
			_errorDic[-11] = "未知错误";
			_errorDic[-12] = "hash表内部错误";
			_errorDic[-13] = "msg id错误";
			_errorDic[1] = "游戏区不存在，还未被创建";
			_errorDic[2] = "游戏房间不存在，还未被创建";
			_errorDic[3] = "设置区属性的buffer超过最大长度限制";
			_errorDic[4] = "设置房间属性的buffer超过最大长度限制";
			_errorDic[5] = "设置桌子属性的buffer超过最大长度限制";
			_errorDic[6] = "设置桌子属性的buffer超过最大长度限制";
			_errorDic[7] = "游戏桌子不存在，还未被创建";
			_errorDic[8] = "游戏用户不存在，还未被创建";
			_errorDic[9] = "调用了EnterZone，进入一个游戏区，但是这个用户却在某个房间或某个桌子内";
			_errorDic[10] = "透传的消息长度过长";
			_errorDic[11] = "用户已经不在桌子或不在房间或不在区";
			_errorDic[12] = "用户还在桌子，不能退出房间，要先退出桌子";
			_errorDic[13] = "用户还在桌子或房间，不能退出区，要先退出桌子、房间";
			_errorDic[14] = "参数不合法";
			_errorDic[15] = "用户不在房间内，要进入桌子，必须先在房间内，快速进入除外";
			_errorDic[16] = "用户不在游戏区内，要进入房间，必须先在游戏区内，快速进入除外";
			_errorDic[17] = "zone id非法，超过最大值，或小于1";
			_errorDic[18] = "用户已经在房间里了";
			_errorDic[19] = "用户已经在桌子里了";
			_errorDic[20] = "区的人数已经满了";
			_errorDic[21] = "room id非法，超过最大值，或小于1";
			_errorDic[22] = "房间的人数已经满了";
			_errorDic[23] = "table id非法，超过最大值，或小于1";
			_errorDic[24] = "桌子的人数已经满了";
			_errorDic[10000] = "游戏区不存在";
			_errorDic[10001] = "房间不存在";
			_errorDic[10002] = "参数非法";
			_errorDic[20000] = "组件未初始化成功或者调用接口时传入的参数不正确";
			_errorDic[20002] = "用户已经进入区了，不能重复进入区，请先退出当前区";
		}
		setupErrorCode();
		
		public static function getInfo(cmdId:int):IPvpInfo
		{
			if(cmdId in _dic)
			{
				return _dic[cmdId];
			}
			return null;
		}
		
		public static function getErrorDes(errorCode:int):String
		{
			if(errorCode in _errorDic)
			{
				return _errorDic[errorCode];
			}
			return "";
		}
	}
}